package main

import (
	"fmt"
)

type Person struct {
	Name string
}

type A struct {
	Name string
	Age int
}

/*
	结构体加绑定在结构体上的方法等同于java中的类和成员函数
	任意对象都能绑定方法，不只是结构体对象
*/

//给Person结构体绑定一个方法
func (p Person) test()  {
	fmt.Println("test() p.Name=",p.Name)
}

type integer int

func (i *integer) change() {
	*i = *i +1
}

func (p *Person) String() string {
	str := fmt.Sprintf("自定义Name=%v",p.Name)
	return str
}

func main()  {
	var p Person
	p.Name = "tom"
	p.test() // 调用方法

	fmt.Println(&p)

	a1 := A {
		Name : "jack",
		Age : 12,
	}

	a2 := A {"tom",13}
	fmt.Println(a1,a2)

	a3 := &A {"marry",15}
	fmt.Println(*a3)
}

